package com.yedou.service.impl;

import com.yedou.convert.SubjectCategoryDTOConverter;
import com.yedou.entity.dto.SubjectCategoryDTO;
import com.yedou.entity.po.SubjectCategory;
import com.yedou.mapper.SubjectCategoryDao;
import com.yedou.service.SubjectCategoryService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 题目分类(SubjectCategory)表服务实现类
 *
 * @author makejava
 * @since 2025-10-10 09:43:49
 */
@Service("subjectCategoryService")
public class SubjectCategoryServiceImpl implements SubjectCategoryService{
    @Resource
    private SubjectCategoryDao subjectCategoryDao;

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public SubjectCategory queryById(Long id) {
        return this.subjectCategoryDao.queryById(id);
    }

    /**
     * 分页查询
     *
     */
    @Override
    public List<SubjectCategory> queryByPage(SubjectCategoryDTO subjectCategoryDTO) {
        SubjectCategory subjectCategory = SubjectCategoryDTOConverter.INSTANCE.convertDtoToCategory(subjectCategoryDTO);
        return this.subjectCategoryDao.queryAllByLimit(subjectCategory);
    }

    /**
     * 新增数据
     * @return 实例对象
     */
    @Override
    public SubjectCategory insert(SubjectCategoryDTO subjectCategoryDTO) {
        SubjectCategory subjectCategory = SubjectCategoryDTOConverter.INSTANCE.convertDtoToCategory(subjectCategoryDTO);
        this.subjectCategoryDao.insert(subjectCategory);
        return subjectCategory;
    }

    /**
     * 修改数据
     *

     */
    @Override
    public SubjectCategory update(SubjectCategoryDTO subjectCategoryDTO) {
        SubjectCategory subjectCategory = SubjectCategoryDTOConverter.INSTANCE.convertDtoToCategory(subjectCategoryDTO);
        this.subjectCategoryDao.insert(subjectCategory);
        this.subjectCategoryDao.update(subjectCategory);
        return this.queryById(subjectCategory.getId());
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Long id) {
        return this.subjectCategoryDao.deleteById(id) > 0;
    }

    @Override
    public List<SubjectCategory> batchInsert(List<SubjectCategoryDTO> subjectCategoryDTOS) {
        List<SubjectCategory> subjectCategories = SubjectCategoryDTOConverter.INSTANCE.convertDtoToCategoryList(subjectCategoryDTOS);
        int rowsAffected = this.subjectCategoryDao.insertBatch(subjectCategories);
        System.out.println("插入影响的行数: " + rowsAffected);
        return subjectCategories;
    }
}
